<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>reduce_class_svm [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_classification.html">分类</a> / <a href="toc_classification_supportvectormachines.html">支持向量机</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">reduce_class_svm</span><span data-if="c" style="display:none;">T_reduce_class_svm</span><span data-if="cpp" style="display:none;">ReduceClassSvm</span><span data-if="dotnet" style="display:none;">ReduceClassSvm</span><span data-if="python" style="display:none;">reduce_class_svm</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">reduce_class_svm</span><span data-if="c" style="display:none;">T_reduce_class_svm</span><span data-if="cpp" style="display:none;">ReduceClassSvm</span><span data-if="dotnet" style="display:none;">ReduceClassSvm</span><span data-if="python" style="display:none;">reduce_class_svm</span></code> — Approximate a trained support vector machine by a reduced support
vector machine for faster classification.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>reduce_class_svm</b>( :  : <a href="#SVMHandle"><i>SVMHandle</i></a>, <a href="#Method"><i>Method</i></a>, <a href="#MinRemainingSV"><i>MinRemainingSV</i></a>, <a href="#MaxError"><i>MaxError</i></a> : <a href="#SVMHandleReduced"><i>SVMHandleReduced</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_reduce_class_svm</b>(const Htuple <a href="#SVMHandle"><i>SVMHandle</i></a>, const Htuple <a href="#Method"><i>Method</i></a>, const Htuple <a href="#MinRemainingSV"><i>MinRemainingSV</i></a>, const Htuple <a href="#MaxError"><i>MaxError</i></a>, Htuple* <a href="#SVMHandleReduced"><i>SVMHandleReduced</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>ReduceClassSvm</b>(const HTuple&amp; <a href="#SVMHandle"><i>SVMHandle</i></a>, const HTuple&amp; <a href="#Method"><i>Method</i></a>, const HTuple&amp; <a href="#MinRemainingSV"><i>MinRemainingSV</i></a>, const HTuple&amp; <a href="#MaxError"><i>MaxError</i></a>, HTuple* <a href="#SVMHandleReduced"><i>SVMHandleReduced</i></a>)</code></p>
<p>
<code><a href="HClassSvm.html">HClassSvm</a> <a href="HClassSvm.html">HClassSvm</a>::<b>ReduceClassSvm</b>(const HString&amp; <a href="#Method"><i>Method</i></a>, Hlong <a href="#MinRemainingSV"><i>MinRemainingSV</i></a>, double <a href="#MaxError"><i>MaxError</i></a>) const</code></p>
<p>
<code><a href="HClassSvm.html">HClassSvm</a> <a href="HClassSvm.html">HClassSvm</a>::<b>ReduceClassSvm</b>(const char* <a href="#Method"><i>Method</i></a>, Hlong <a href="#MinRemainingSV"><i>MinRemainingSV</i></a>, double <a href="#MaxError"><i>MaxError</i></a>) const</code></p>
<p>
<code><a href="HClassSvm.html">HClassSvm</a> <a href="HClassSvm.html">HClassSvm</a>::<b>ReduceClassSvm</b>(const wchar_t* <a href="#Method"><i>Method</i></a>, Hlong <a href="#MinRemainingSV"><i>MinRemainingSV</i></a>, double <a href="#MaxError"><i>MaxError</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>ReduceClassSvm</b>(<a href="HTuple.html">HTuple</a> <a href="#SVMHandle"><i>SVMHandle</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Method"><i>method</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MinRemainingSV"><i>minRemainingSV</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MaxError"><i>maxError</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#SVMHandleReduced"><i>SVMHandleReduced</i></a>)</code></p>
<p>
<code><a href="HClassSvm.html">HClassSvm</a> <a href="HClassSvm.html">HClassSvm</a>.<b>ReduceClassSvm</b>(string <a href="#Method"><i>method</i></a>, int <a href="#MinRemainingSV"><i>minRemainingSV</i></a>, double <a href="#MaxError"><i>maxError</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>reduce_class_svm</b>(<a href="#SVMHandle"><i>svmhandle</i></a>: HHandle, <a href="#Method"><i>method</i></a>: str, <a href="#MinRemainingSV"><i>min_remaining_sv</i></a>: int, <a href="#MaxError"><i>max_error</i></a>: float) -&gt; HHandle</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>As described in <a href="create_class_svm.html"><code><span data-if="hdevelop" style="display:inline">create_class_svm</span><span data-if="c" style="display:none">create_class_svm</span><span data-if="cpp" style="display:none">CreateClassSvm</span><span data-if="com" style="display:none">CreateClassSvm</span><span data-if="dotnet" style="display:none">CreateClassSvm</span><span data-if="python" style="display:none">create_class_svm</span></code></a>, the classification time of
a SVM depends on the number of kernel evaluations between the
support vectors and the feature vectors.  While the length of the
data vectors can be reduced in a preprocessing step like
<i><span data-if="hdevelop" style="display:inline">'principal_components'</span><span data-if="c" style="display:none">"principal_components"</span><span data-if="cpp" style="display:none">"principal_components"</span><span data-if="com" style="display:none">"principal_components"</span><span data-if="dotnet" style="display:none">"principal_components"</span><span data-if="python" style="display:none">"principal_components"</span></i> or <i><span data-if="hdevelop" style="display:inline">'canonical_variates'</span><span data-if="c" style="display:none">"canonical_variates"</span><span data-if="cpp" style="display:none">"canonical_variates"</span><span data-if="com" style="display:none">"canonical_variates"</span><span data-if="dotnet" style="display:none">"canonical_variates"</span><span data-if="python" style="display:none">"canonical_variates"</span></i> (see
<a href="create_class_svm.html"><code><span data-if="hdevelop" style="display:inline">create_class_svm</span><span data-if="c" style="display:none">create_class_svm</span><span data-if="cpp" style="display:none">CreateClassSvm</span><span data-if="com" style="display:none">CreateClassSvm</span><span data-if="dotnet" style="display:none">CreateClassSvm</span><span data-if="python" style="display:none">create_class_svm</span></code></a> for details), the number of resulting SV
depends on the complexity of the classification problem. The number
of SVs is determined during training.  To further reduce
classification time, the number of SVs can be reduced by
approximating the original separating hyperplane with fewer SVs than
originally required.  For this purpose, a copy of the original SVM
provided by <a href="#SVMHandle"><i><code><span data-if="hdevelop" style="display:inline">SVMHandle</span><span data-if="c" style="display:none">SVMHandle</span><span data-if="cpp" style="display:none">SVMHandle</span><span data-if="com" style="display:none">SVMHandle</span><span data-if="dotnet" style="display:none">SVMHandle</span><span data-if="python" style="display:none">svmhandle</span></code></i></a> is created and returned in
<a href="#SVMHandleReduced"><i><code><span data-if="hdevelop" style="display:inline">SVMHandleReduced</span><span data-if="c" style="display:none">SVMHandleReduced</span><span data-if="cpp" style="display:none">SVMHandleReduced</span><span data-if="com" style="display:none">SVMHandleReduced</span><span data-if="dotnet" style="display:none">SVMHandleReduced</span><span data-if="python" style="display:none">svmhandle_reduced</span></code></i></a>.  This new SVM has the same
parametrization as the original SVM, but a different SV expansion.
The training samples that are included in <a href="#SVMHandle"><i><code><span data-if="hdevelop" style="display:inline">SVMHandle</span><span data-if="c" style="display:none">SVMHandle</span><span data-if="cpp" style="display:none">SVMHandle</span><span data-if="com" style="display:none">SVMHandle</span><span data-if="dotnet" style="display:none">SVMHandle</span><span data-if="python" style="display:none">svmhandle</span></code></i></a> are not
copied.  The original SVM is not modified by
<code><span data-if="hdevelop" style="display:inline">reduce_class_svm</span><span data-if="c" style="display:none">reduce_class_svm</span><span data-if="cpp" style="display:none">ReduceClassSvm</span><span data-if="com" style="display:none">ReduceClassSvm</span><span data-if="dotnet" style="display:none">ReduceClassSvm</span><span data-if="python" style="display:none">reduce_class_svm</span></code>.
</p>
<p>The reduction method is selected with <a href="#Method"><i><code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code></i></a>. Currently,
only a bottom up approach is supported, which iteratively merges SVs.
The algorithm stops if either the minimum number of SVs is reached
(<a href="#MinRemainingSV"><i><code><span data-if="hdevelop" style="display:inline">MinRemainingSV</span><span data-if="c" style="display:none">MinRemainingSV</span><span data-if="cpp" style="display:none">MinRemainingSV</span><span data-if="com" style="display:none">MinRemainingSV</span><span data-if="dotnet" style="display:none">minRemainingSV</span><span data-if="python" style="display:none">min_remaining_sv</span></code></i></a>) or if the accumulated maximum error exceeds
the threshold <a href="#MaxError"><i><code><span data-if="hdevelop" style="display:inline">MaxError</span><span data-if="c" style="display:none">MaxError</span><span data-if="cpp" style="display:none">MaxError</span><span data-if="com" style="display:none">MaxError</span><span data-if="dotnet" style="display:none">maxError</span><span data-if="python" style="display:none">max_error</span></code></i></a>. Note that the approximation reduces
the complexity of the hyperplane and thereby leads to a deteriorated
classification rate.  A common approach is therefore to start from a
small <a href="#MaxError"><i><code><span data-if="hdevelop" style="display:inline">MaxError</span><span data-if="c" style="display:none">MaxError</span><span data-if="cpp" style="display:none">MaxError</span><span data-if="com" style="display:none">MaxError</span><span data-if="dotnet" style="display:none">maxError</span><span data-if="python" style="display:none">max_error</span></code></i></a> e.g., <i>0.001</i>, and to increase its
value step by step.  To control the reduction ratio, at each step
the number of remaining SVs is determined with
<a href="get_support_vector_num_class_svm.html"><code><span data-if="hdevelop" style="display:inline">get_support_vector_num_class_svm</span><span data-if="c" style="display:none">get_support_vector_num_class_svm</span><span data-if="cpp" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="com" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="dotnet" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="python" style="display:none">get_support_vector_num_class_svm</span></code></a> and the classification rate
is checked on a separate test data set with
<a href="classify_class_svm.html"><code><span data-if="hdevelop" style="display:inline">classify_class_svm</span><span data-if="c" style="display:none">classify_class_svm</span><span data-if="cpp" style="display:none">ClassifyClassSvm</span><span data-if="com" style="display:none">ClassifyClassSvm</span><span data-if="dotnet" style="display:none">ClassifyClassSvm</span><span data-if="python" style="display:none">classify_class_svm</span></code></a>.</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="SVMHandle" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SVMHandle</span><span data-if="c" style="display:none">SVMHandle</span><span data-if="cpp" style="display:none">SVMHandle</span><span data-if="com" style="display:none">SVMHandle</span><span data-if="dotnet" style="display:none">SVMHandle</span><span data-if="python" style="display:none">svmhandle</span></code></b> (input_control)  </span><span>class_svm <code>→</code> <span data-if="dotnet" style="display:none"><a href="HClassSvm.html">HClassSvm</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Original SVM handle.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Method" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Type of postprocessing to reduce number of SV.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'bottom_up'</span>
    <span data-if="c" style="display:none">"bottom_up"</span>
    <span data-if="cpp" style="display:none">"bottom_up"</span>
    <span data-if="com" style="display:none">"bottom_up"</span>
    <span data-if="dotnet" style="display:none">"bottom_up"</span>
    <span data-if="python" style="display:none">"bottom_up"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'bottom_up'</span><span data-if="c" style="display:none">"bottom_up"</span><span data-if="cpp" style="display:none">"bottom_up"</span><span data-if="com" style="display:none">"bottom_up"</span><span data-if="dotnet" style="display:none">"bottom_up"</span><span data-if="python" style="display:none">"bottom_up"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="MinRemainingSV" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MinRemainingSV</span><span data-if="c" style="display:none">MinRemainingSV</span><span data-if="cpp" style="display:none">MinRemainingSV</span><span data-if="com" style="display:none">MinRemainingSV</span><span data-if="dotnet" style="display:none">minRemainingSV</span><span data-if="python" style="display:none">min_remaining_sv</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Minimum number of remaining SVs.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>2</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>2, 3, 4, 5, 7, 10, 15, 20, 30, 50</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>MinRemainingSV &gt;= 2</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="MaxError" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MaxError</span><span data-if="c" style="display:none">MaxError</span><span data-if="cpp" style="display:none">MaxError</span><span data-if="com" style="display:none">MaxError</span><span data-if="dotnet" style="display:none">maxError</span><span data-if="python" style="display:none">max_error</span></code></b> (input_control)  </span><span>real <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Maximum allowed error of reduction.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.001</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.0001, 0.0002, 0.0005, 0.001, 0.002, 0.005, 0.01, 0.02, 0.05</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>MaxError &gt; 0.0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="SVMHandleReduced" class="parname"><b><code><span data-if="hdevelop" style="display:inline">SVMHandleReduced</span><span data-if="c" style="display:none">SVMHandleReduced</span><span data-if="cpp" style="display:none">SVMHandleReduced</span><span data-if="com" style="display:none">SVMHandleReduced</span><span data-if="dotnet" style="display:none">SVMHandleReduced</span><span data-if="python" style="display:none">svmhandle_reduced</span></code></b> (output_control)  </span><span>class_svm <code>→</code> <span data-if="dotnet" style="display:none"><a href="HClassSvm.html">HClassSvm</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">SVMHandle of reduced SVM.</p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* Train an SVM
create_class_svm (NumFeatures, 'rbf', 0.01, 0.01, NumClasses,\
                  'one-versus-all', 'normalization', NumFeatures,\
                  SVMHandle)
read_samples_class_svm (SVMHandle, 'samples.mtf')
train_class_svm (SVMHandle, 0.001, 'default')
* Create a reduced SVM
reduce_class_svm (SVMHandle, 'bottom_up', 2, 0.01, SVMHandleReduced)
write_class_svm (SVMHandleReduced, 'classifier.svm')
</pre>
<h2 id="sec_result">结果</h2>
<p>If the parameters are valid 该算子 <a href="train_class_svm.html"><code><span data-if="hdevelop" style="display:inline">train_class_svm</span><span data-if="c" style="display:none">train_class_svm</span><span data-if="cpp" style="display:none">TrainClassSvm</span><span data-if="com" style="display:none">TrainClassSvm</span><span data-if="dotnet" style="display:none">TrainClassSvm</span><span data-if="python" style="display:none">train_class_svm</span></code></a>
返回值 <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .  If necessary, an exception is
raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="train_class_svm.html"><span data-if="hdevelop" style="display:inline">train_class_svm</span><span data-if="c" style="display:none">train_class_svm</span><span data-if="cpp" style="display:none">TrainClassSvm</span><span data-if="com" style="display:none">TrainClassSvm</span><span data-if="dotnet" style="display:none">TrainClassSvm</span><span data-if="python" style="display:none">train_class_svm</span></a></code>, 
<code><a href="get_support_vector_num_class_svm.html"><span data-if="hdevelop" style="display:inline">get_support_vector_num_class_svm</span><span data-if="c" style="display:none">get_support_vector_num_class_svm</span><span data-if="cpp" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="com" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="dotnet" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="python" style="display:none">get_support_vector_num_class_svm</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="classify_class_svm.html"><span data-if="hdevelop" style="display:inline">classify_class_svm</span><span data-if="c" style="display:none">classify_class_svm</span><span data-if="cpp" style="display:none">ClassifyClassSvm</span><span data-if="com" style="display:none">ClassifyClassSvm</span><span data-if="dotnet" style="display:none">ClassifyClassSvm</span><span data-if="python" style="display:none">classify_class_svm</span></a></code>, 
<code><a href="write_class_svm.html"><span data-if="hdevelop" style="display:inline">write_class_svm</span><span data-if="c" style="display:none">write_class_svm</span><span data-if="cpp" style="display:none">WriteClassSvm</span><span data-if="com" style="display:none">WriteClassSvm</span><span data-if="dotnet" style="display:none">WriteClassSvm</span><span data-if="python" style="display:none">write_class_svm</span></a></code>, 
<code><a href="get_support_vector_num_class_svm.html"><span data-if="hdevelop" style="display:inline">get_support_vector_num_class_svm</span><span data-if="c" style="display:none">get_support_vector_num_class_svm</span><span data-if="cpp" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="com" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="dotnet" style="display:none">GetSupportVectorNumClassSvm</span><span data-if="python" style="display:none">get_support_vector_num_class_svm</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="train_class_svm.html"><span data-if="hdevelop" style="display:inline">train_class_svm</span><span data-if="c" style="display:none">train_class_svm</span><span data-if="cpp" style="display:none">TrainClassSvm</span><span data-if="com" style="display:none">TrainClassSvm</span><span data-if="dotnet" style="display:none">TrainClassSvm</span><span data-if="python" style="display:none">train_class_svm</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
